<template>
    <MyArticle title="CentOS7升级OpenSSH至9.9" date="2025年04月03日">
        <div class="_article-content">
            <p>OpenSSH9.9之前的有安全漏洞，需要升级。</p>
            <p>查看当前版本：</p>
            <pre><code>ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017</code></pre>
            <h3 class="title">开启Telnet服务</h3>
            <p>防止ssh升级过程中出错导致无法登录服务器，则可以使用telnet协议登录。</p>
            <p>安装相应软件：telnet-server（telnet服务端）、xinetd、telnet（telnet客户端）,执行以下命令</p>
            <pre><code>yum install -y telnet-server
yum install -y xinetd
yum install -y telnet</code></pre>
            <p>设置telnet服务开机自启动并开启服务：</p>
            <pre><code>systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd.service</code></pre>
            <p>查看telnet和xinetd服务状态：</p>
            <pre><code>systemctl status xinetd.service</code></pre>
            <p>修改配置，允许root用户通过telnet方式远程登录系统：</p>
            <p>在文件/etc/securetty末尾添加以下内容：</p>
            <pre><code>pts/0
pts/1
pts/2
pts/3</code></pre>
            <p>关闭防火墙和selinux</p>
            <pre><code>systemctl stop firewalld
setenforce 0</code></pre>
            <p>修改/etc/pam.d/remote文件，保障远程telnet可以使用root用户登录：</p>
            <pre><code>#auth  required   pam_securetty.so   # 注释这一行</code></pre>
            <p>修改telnet参数，保障客户端可以正常telnet到服务器：</p>
            <pre><code># 如果没有这个文件，新建文件写入内容。
[root@ct1 ~]# vi /etc/xinetd.d/telnet
service telnet
{
        flags = REUSE
        socket_type = stream
        wait = no
        user = root
        server = /usr/sbin/in.telnetd
        log_on_failure += USERID
        disable = no
}</code></pre>
            <p>重启xinetd：</p>
            <pre><code>systemctl restart xinetd</code></pre>
            <p>安全组规则配置开放23端口。</p>
            <h3 class="title">升级OpenSSH</h3>
            <p>下载openssh、openssl源码包：</p>
            <pre><code>cd /root
mkdir openssh
cd openssh
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p2.tar.gz
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz</code></pre>
            <p>备份旧ssh相关的二进制程序文件和配置文件：</p>
            <pre><code>mv /etc/ssh/ /home/ssh-bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /etc/pam.d/sshd  /etc/pam.d/sshd.old</code></pre>
            <p>解压文件包：</p>
            <pre><code>tar xf openssh-9.9p2.tar.gz -C ./
tar xf openssl-1.1.1w.tar.gz -C ./</code></pre>
            <p>先升级openssl：</p>
            <pre><code>// 检查并备份旧openssl相关文件
mv /usr/bin/openssl  /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
// 编译安装openssl
cd openssl-1.1.1w
./config --prefix=/usr --shared && make && make install</code></pre>
            <p>安装完毕，查看openssl版本：</p>
            <pre><code>openssl version -a
OpenSSL 1.1.1w  11 Sep 2023</code></pre>
            <p>先安装zlib和pam-devel软件包：</p>
            <pre><code>yum -y install zlib zlib-devel
yum -y install pam-devel.x86_64</code></pre>
            <p>编译openssh：</p>
            <pre><code>cd /root/openssh/openssh-9.9p2
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords</code></pre>
            <p>执行安装命令：</p>
            <pre><code>make && make install</code></pre>
            <p>安装完毕，查看ssh版本：</p>
            <pre><code>[root@back-02 openssh-9.9p2]# ssh -V
OpenSSH_9.9p2, OpenSSL 1.1.1w  11 Sep 2023</code></pre>
            <p>如果版本依然没变，尝试以下方法：</p>
            <pre><code>cp ./contrib/redhat/sshd.init /etc/init.d/sshd
systemctl daemon-reload
systemctl restart sshd
hash -r // 清除命令缓存</code></pre>
            <p>修改配置文件：vi /etc/ssh/sshd_config，添加下面两行：</p>
            <pre><code>X11Forwarding yes
PermitRootLogin yes</code></pre>
            <p>重启服务：</p>
            <pre><code>systemctl restart sshd</code></pre>
        </div>
    </MyArticle>
</template>